[org 07c00h]

[section .text]
[bits 16]
global _start
_start:
    xchg bx, bx

    mov ax, 3
    int 0x10

    mov ax, 0
    mov ss, ax
    mov ds, ax
    mov es, ax
    mov fs, ax
    mov gs, ax
    mov si, ax

    mov si, msg
    call print

    jmp $

print:
    mov ah, 0x0e
    mov bh, 0
    mov bl, 0x01
.loop:
    mov al, [si]
    cmp al, 0
    jz .done
    int 10h

    inc si
    jmp .loop
.done:
    ret

msg:
    db "hello", 0

times 510 - ($ - $$) db 10
db 0x55, 0xaa